package zw_801_900.zw_868_二进制间距;

class Solution {
    public static void main(String[] args) {
        int n = 22;
        int gap = binaryGap(n);
        System.out.println(gap);
    }

    /**
     * 根据题意进行模拟即可，遍历 n 的二进制中的每一位 i，
     * 同时记录上一位 1 的位置 j，即可得到所有相邻 1 的间距，所有间距取max 即是答案。
     *
     * @param n
     * @return
     */
    public static int binaryGap(int n) {
        int ans = 0;
        for (int i = 31, j = -1; i >= 0; i--) {
            if (((n >> i) & 1) == 1) {
                if (j != -1) ans = Math.max(ans, j - i);
                j = i;
            }
        }
        return ans;
    }

}
